1. Field of the Invention
The present invention relates to systems and methods for sending and receiving messages. In particular, the present invention relates to a system and method for sending and receiving messages using fault-tolerant or high availability architecture.
2. Description of the Background Art
The use and proliferation of distributed computing networks is ever increasing. With the advent and business use of the Internet, the need for more efficient distributed computing system has become critical. The business use of the Internet has forced the integration of disparate computing environments with distributed computing systems that enable data transfer between such disparate systems. This in turn has created a need for better messaging systems that can handle amount of data and communication that are needed to effectively let disparate systems operate together and share information.
Such distributed processing and messaging systems are now used for a variety of applications. As they have been used for more applications, there is increasing demand for systems that are fault-tolerant such that the messaging systems can be used for financial transactions, equity trades and other messaging that demands high availability. However, there are very few such systems that can provide such fault tolerance, and those that have fault tolerance do so with a penalty in cost, performance, and/or hardware requirements.
A typical prior art approach for providing fault tolerance is shown in FIG. 1 with a system 100 including a first server A 100, a second server A′ 102 and a shared storage 104. The state of the first server A 100 is persisted or stored on the shared storage 104 such that in the event server A become unavailable, server A′ can recover using the state information on storage 104.
However, the prior art systems 100 suffer from a number of shortcomings. First, there is no live or hot recovery. Any failover requires that server A′ perform recovery from disk which requires time during which pending transactions will be lost. Second, additional software is required to manage the two servers 102, 104 during start up and back up. This software is not used anywhere else for operation of the messaging systems or servers. Third, hardware locks are used to detect the failure of a server. Such hardware locks are difficult to distribute to the tens or hundreds of servers that may be part of a messaging system. Fourth, typically, the Server A′ cannot be used for any other function that the back up to server A, and therefore the prior art effectively doubles the hardware costs to provide fault tolerance.
Therefore, what is needed is a system and methods for implementing a fault-tolerant messaging system that overcomes the limitations found in the prior art.